/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entities;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author heraldo
 */
public class ManagerProducto {
    private List<Producto> productos;
    private static ManagerProducto instance = null;

    public ManagerProducto() {
        productos = new ArrayList<Producto>();
        load_init();
    }
    
    private static void createInstance() {
        synchronized (ManagerMercado.class) {
            // En la zona sincronizada sería necesario volver a comprobar que no se ha creado la instancia
            if (instance == null) {
                instance = new ManagerProducto();
            }
        }
    }

    public List<Producto> getProductos() {
        return productos;
    }

    public void addProducto(Producto producto){
        productos.add(producto);
    }
    
    public Producto getProducto(Integer index){
        return this.productos.get(index);
    }
    
    public Producto getProducto(String nombre){
        Producto p = null;
        for (Producto producto : productos) {
            if(producto.getNombre().equalsIgnoreCase(nombre)){
                p = producto;
                break;
            }
        }
        return p;
    }

    public static ManagerProducto getInstance() {
        createInstance();
        return instance;
    }

    //El método "clone" es sobreescrito por el siguiente que arroja una excepción:
    @Override
    public Object clone() throws CloneNotSupportedException {
        throw new CloneNotSupportedException();
    }
    
    private void load_init(){
        Producto producto = new Producto("Jurel");
        addProducto(producto);
        producto = new Producto("Merluza");
        addProducto(producto);
        producto = new Producto("Pulpo");
        addProducto(producto);
    }
    
}
